home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
C-Communications
/
(c)c6.d64
/
xmodem src 6.81
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2007-02-04
|
30KB
|
1,148 lines
0 REM --------------------------------
5 REM
10 REM XMOBUF VER 6.8 SOURCE CODE
15 REM (C) 1985 CHRIS KAISER
20 REM OKAY TO COPY OR GIVE AWAY
25 REM BUT NOT TO SELL FOR PROFIT
30 REM
35 REM ---------------------------------
40 GOTO240:REM SET UP
45 REM ---------------------------------
50 REM MAIN TERMINAL LOOP
55 REM --------------------------------
60 GET#5,R$:IFR$=""THEN125
65 R=F%(ASC(R$)):PRINTL$CHR$(R);:POKEU,.:IFBD=.THEN60
70 POKEBP,(R):BP=BP+W:IFBP>BBTHEN105
75 IFXOTHEN60
80 BJ=PEEK(667):BK=PEEK(668)
85 IFBJ>BKTHENBM=BJ-BK
90 IFBK>BJTHENBM=ABS(BK-(BJ+255))
95 IFBM>180THENPRINT#5,CHR$(XF);:XO=W
100 GOTO60
105 PRINTJ$J$"[ [194]UFFER [198]ULL & [195]LOSED ]":BD=0:PRINT#5,CHR$(XF);
110 PRINTJ$"[ [195][212][210][204]-[209] [195]ONTINUES ]"
115 GOTO60
120 PRINTO$;
125 IFXOTHENPRINT#5,CHR$(XN);:BM=.:XO=.
130 GETA$:POKE646,D1
135 IFA$=""THENPRINTCHR$(164)CHR$(157);:GOTO60:REM CURSOR
140 X=0:IFBR=0THEN180
145 IFBRTHENX=ASC(A$)
150 IFX=13THENPRINTL$;
155 IFX=145THENPRINTL$;
160 IFX=157THENPRINTL$;
165 IFX=17THENPRINTL$;
170 IFX=19THENPRINTL$;
175 IFBRTHENPRINTA$;:REM 64 TO 64 HALF DUPLEX
180 POKEU,0
185 IFA$=G$THENPRINTL$J$:GOTO1825:REM <F1> TO MAIN MENU
190 IFA$=CHR$(134)THEN3440:REM <F3> TO BUFFER MENU
195 IFA$=CHR$(135)THEN3565:REM <F5> OPEN BUFFER
200 IFA$=CHR$(136)THEN3590:REM <F7> CLOSE BUFFER
205 IFA$=CHR$(140)THEN4260:REM <F8> ZERO BUFFER
210 IFA$=CHR$(139)THEN5120:REM <F6> PRINT SCREEN
215 PRINT#5,CHR$(T%(ASC(A$)));
220 GOTO60
225 REM ------------------------------
230 REM SET UP AND INITIALIZE ROUTINE
235 REM ------------------------------
240 D1=6:D2=15:D3=15:REM DEFAULT COLORS
245 POKE646,D1:POKE53280,D2:POKE53281,D3
250 E$=CHR$(147):REM CLRHOME
255 J$=CHR$(13)
260 PRINTCHR$(14)
265 GOTO2915:REM GET USER COLORS
270 OPEN5,2,0,CHR$(0)+CHR$(0)+CHR$(61)+CHR$(1):REM DEEPAKS 1200 BAUD OPENER
275 REM THANKS FOR THAT OPEN STATEMENT, DEEPAK!
280 GOTO290
285 OPEN5,2,0,CHR$(6)+CHR$(0)+CHR$(0)+CHR$(0):REM VANILLA 300 BAUD OPENER
290 D1=PEEK(646):D2=PEEK(53280):D3=PEEK(53281)
295 POKE56,92:POKE52,92:REM DEC. FOR BIGGER BUFFER-CHECK FRE0 AFTER RUN 1ST
300 R$="":REM INSTEAD OF A$ FOR RX SIDE
305 CLOSE15:OPEN15,8,15
310 REM ------------------------
315 REM DEFINE BUFFER POINTERS
320 REM ------------------------
325 BA=PEEK(55)+(256*PEEK(56)):REM START OF BUFFER
330 BB=40900:REM TOP OF BASIC BUFFER
335 BC=0:REM BUFFER COUNTER
340 BP=BA+1:REM BUFFER NEXTCHAR POINTER
345 BD=0:REM BUFFER FLAG SET IF OPEN
350 BE=BA+1:REM BOTTOM OF BUFFER
355 BG=0:REM BUFFER FORNEXT INDEX
360 BJ=0:REM RS232 STRT RX BFR
365 BK=0:REM RS232 END RX BFR
370 BM=0:REM RS232 CHAR COUNT
375 FC=0:REM CIS IMAGE FLAG
380 BI=0:REM BUFFER BLOCK SIZE
385 BN=0:REM LAST BLOCK FORNEXT INDEX
390 BO=0:REM LAST BLOCK FLAG
395 BQ=0:REM LAST BLOCK INDEX
400 BR=BR:REM 64 TO 64 FLAG
405 REM ------------------------
410 REM SET UP FORMATTING AND
415 REM MISCELLANEOUS VARIABLES
420 REM ------------------------
425 XN=17
430 XF=19
435 U=212
440 POKE56328,0:REM START CLOCK
445 B1=56577
450 B2=56579
455 OH=B1:REM FOR 1660
460 HI=32:REM FOR 1660
465 LO=255-HI:REM FOR 1660
470 M3=0:REM MODEM 300 FLAG FOR 1660
475 B3=56329:REM CLOCK
480 D=256
485 W=1
490 E$=CHR$(147):REM CLRHOME
495 J$=CHR$(13):REM CARRIAGE RETURN
500 L$=CHR$(32)+CHR$(157):REM SPACE PLUS LEFT CRSR
505 P$=CHR$(19):REM HOME
510 F$=CHR$(17):REM CRSR DOWN
515 SP$=CHR$(32):REM SPACE
520 SQ$=SP$+SP$+SP$+SP$+SP$+SP$+SP$+SP$+SP$+SP$:REM 10 SPACES
525 SR$=J$+RIGHT$(SQ$,5)
530 CU$=CHR$(145):REM CRSR UP
535 O=8
540 G$=F$+F$+F$+F$+F$:REM 5 CRSR DOWNS
545 BL$=P$+G$
550 ER$=BL$+F$+F$+F$+SQ$+SQ$+SQ$+SQ$+CU$+CHR$(13)
555 AK$=BL$+F$+F$+F$+F$+SQ$+SQ$+SQ$+SQ$+CU$+CHR$(13)
560 LI$=CHR$(164):FORI=1TO6:LI$=LI$+LI$:NEXTI:LI$=RIGHT$(LI$,40)
565 E=0
570 CR$=CHR$(29)
575 EI$=CR$+CR$+CR$
580 EJ$=EI$+EI$+EI$
585 EJ$=EJ$+EJ$:REM 18 CRSR RIGHTS
590 ES$=P$+EI$+F$+"[205]ODEM [208]ORT [211]TATUS ="
595 UQ$=BL$+G$+G$+F$
600 FC$=CHR$(32)+CHR$(32)+CHR$(32)+CHR$(157)+CHR$(157)+CHR$(157)
605 ACK=6
610 NAK=21
615 EOT=4
620 CAN=24
625 Z=131
630 V=132
635 F=255
640 TR=0:REM DSK ERROR TRACK VARIABLE
645 SE=0:REM DSK ERROR SECTOR VARIABLE
650 M=288
655 P=1
660 C$=CHR$(0)
665 O$=CHR$(18)+CHR$(32)+CHR$(157)+CHR$(146)
670 G$=CHR$(133)
675 REM -------------------------------
680 REM PRINT FIRST USER SCREEN AND GET
685 REM DUPLEX SETTINGS FROM USER
690 REM -------------------------------
695 PRINTE$LI$
700 PRINTSPC(8)"[216]MODEM [208]ROTOCOL [212]ERMINAL"J$LI$
705 PRINTER$+SQ$+"[216][205][207][194][213][198] - [214]6.8.1"J$
710 PRINTSQ$"([195]) 1984 [195]HRIS [203]AISER"+J$J$
715 PRINTF$F$"<1> [194]ULLETIN [194]OARD = [198]ULL-[196]UPLEX"
720 PRINTF$"<2> [195]64 TO [195]64 = [200]ALF-[196]UPLEX"J$
725 PRINT"[197]NTER CHOICE <1-2>"
730 GOSUB2635
735 IFA$="1"THENBR=0:GOTO765
740 IFA$="2"THENBR=W:GOTO765
745 GOTO725
750 REM -------------------------------
755 REM SET UP TRANSLATION TABLES
760 REM -------------------------------
765 DIMF%(255):REM FROM/RECEIVE ARRAY
770 DIMT%(255):REM TO/SEND ARRAY
775 DIMU%(1,132)
780 DIMB%(8)
785 PRINT:PRINT
790 PRINTE$:PRINT:PRINT:PRINT" [ [195]REATING [212]RANSLATION [212]ABLES ]"
795 FORJ=1TO32
800 T%(J)=J
805 NEXTJ
810 FORJ=32TO64
815 T%(J)=J
820 NEXTJ
825 T%(13)=13
830 T%(20)=8
835 FORJ=65TO90
840 T%(J)=J+32
845 NEXTJ
850 FORJ=91TO95
855 T%(J)=J
860 NEXTJ
865 FORJ=193TO218
870 T%(J)=J-128
875 NEXTJ
880 T%(146)=P
885 T%(133)=P
890 T%(147)=0
895 T%(137)=3
900 T%(134)=17
905 T%(138)=0
910 T%(221)=126:REM SHIFTED MINUS EQUALS TILDE FOR DECMATE EASYCOM ACCESS
915 FORJ=0TOF
920 K=T%(J)
925 IFK<>0THENF%(K)=J:F%(K+128)=J
930 NEXTJ
935 F%(19)=0:F%(147)=0
940 F%(12)=147
945 F%(8)=157
950 REM --------------------------
955 REM CIS C64 IMG HEADER VALUES
960 REM FOR AUTO HEADER STRIPPER
965 REM --------------------------
970 B%(4)=4:REM CIS IMAGE HEADER
975 B%(5)=0:REM FOR HEADER STRIPPER
980 B%(6)=67
985 B%(7)=67
990 B%(8)=51
995 REM ------------------------------
1000 REM DISPLAY MAIN TERMINAL SCREEN
1005 REM WITH USER REMINDERS FOR F KEY
1010 REM DEFINITIONS
1015 REM ------------------------------
1020 PRINTE$
1025 PRINTCHR$(14)
1030 BC=BB-BP
1035 PRINTLI$
1040 IFBRTHENPRINT" 64 TO 64 [200]ALF-[196]UPLEX":GOTO1055
1045 REM THANKS FOR POINTING THESE OUT, PRESTON AND LALLIE
1050 IFBR=0THENPRINT" [195][201][211]-[194][194][211] [198]ULL-[196]UPLEX"
1055 IFPEEK(661)=61THENPRINT" [200][201][199][200] [211][208][197][197][196] [212]ERMINAL [205]ODE - 1200 [194]AUD":GOTO1065
1060 IFPEEK(600)=0THENPRINT" 300 [194]AUD [212][197][210][205][201][206][193][204] [205][207][196][197]"
1065 PRINT" <F1> = [205]AIN [205]ENU"
1070 PRINT" <F3> = [194]UFFER [205]ENU"
1075 PRINTF$" [194]UFFER = <F5>[207]PEN <F7>[195]LOSE <F8>[218]ERO"
1080 PRINT" [211]CREEN = <F6>[208]RINT [211]CREEN"
1085 PRINTLI$
1090 IFA$=CHR$(CAN)THENPRINTG$+EJ$+"[212]RANSFER [195][193][206]CELLED!"
1095 IFFA=WTHENIFBRTHENPRINT#5,J$J$";;64 [212][207] 64 [216][205][207][196][197][205] [198][201][204][197] [212][210][193][206][211][198][197][210] [197][206][196][197][196],"
1100 IFFA=WTHENIFBRTHENPRINT#5,";;[207][212][200][197][210] [207][208][197][210][193][212][207][210] [194][193][195][203][160][212][207][160][212][197][210][205][201][206][193][204][160][205][207][196][197]"
1105 IFFA=WTHENIFBRTHENPRINTJ$";;[207][212][200][197][210] [207][208][197][210][193][212][207][210] [195][213][197][196] [217][207][213] [193][210][197] [194][193][195][203] [212][207]"
1110 IFFA=WTHENIFBRTHENPRINT";;[212][197][210][205][201][206][193][204][160][205][207][196][197]...."
1115 IFFA=WTHENFA=0
1120 PRINT#5,CHR$(XN);
1125 GOTO60
1130 REM -------------------------------
1135 REM XMODEM DOWNLOAD LOOP
1140 REM WARNING- DIDDLE WITH THIS AT
1145 REM YOUR OWN RISK - IT IS VERY
1150 REM TOUCHY AND SENSITIVE TO CHANGE
1155 REM -------------------------------
1160 PRINTE$+F$"[201]S OTHER [211][217][211]TEM READY TO [212][210][193]NSMIT? ([217]/[206])":GOSUB2635
1165 IFA$="N"THEN1020
1170 PRINTJ$
1175 IFA$<>"Y"THEN1160
1180 G=3
1185 K$="W"
1190 GOSUB1960
1195 WA=0:BN=0:BO=0:BQ=0
1200 N=0
1205 PRINTJ$J$"[196]OWNLOADING "F$ER$"[211]TATUS"
1210 WB=0:FE=0
1215 ID=0
1220 BL=0
1225 FD=0
1230 FORI=WTOV:GET#5,A$:NEXTI:IFHETHENGOSUB2710:GOTO1245:REM KEEPS STACK CLEAN
1235 GOSUB2710:REM SEND NAK
1240 FORH=WTOP
1245 CH=0
1250 REM ----------------------
1255 REM MAIN XMODEM LOOP
1260 REM ----------------------
1265 FORX=WTOV
1270 GET#5,A$
1275 E=PEEK(663)
1280 IFPEEK(659)=0THEN1310
1285 REM EXTRA PRINTS HERE NEEDED FOR 300 BAUD DELAY IN COMPILED PROGRAM
1290 U$=STR$(E)
1295 IFE=0THENU$=" [210][197][195][197][201][214][201][206][199]"
1300 IFE=8THENU$=" [215]AITING "
1305 IFPEEK(659)THENPRINTES$U$;
1310 POKE663,0
1315 IFA$=""THENIFE=OTHENL=L+W:REM O NOT ZERO INTENTIONAL HERE
1320 IFPEEK(659)THENPRINTUQ$+"300 [194]AUD ";
1325 IFPEEK(659)THENPRINT"[198]ILE [212]RANSFER IN [208]ROGRESS"
1330 IFE=0THENL=0
1335 IFE=0THEN1375
1340 IFL=6*MTHENL=0:WA=1:WB=WB+1:REM 18 SEC NAK CYCLE TO WORK WITH CIS
1345 IFWATHENPRINTBL$"[215][193][201][212]ING";WB
1350 IFWATHENGOSUB2685:REM SEND NAK
1355 IFWATHENDY=5
1360 IFWATHENIFPEEK(659)THENGOSUB3385
1365 IFWATHEN1240
1370 GOTO1270:REM CHANGED TO TOLERATE PACKET SWITCHERS LIKE COMPUSERVE ETC
1375 WB=0
1380 IFX<>WTHEN1400
1385 IFA$=CHR$(EOT)THENIFBL<2THENBL=0:FC=1:X=V:FD=1:GOTO1410
1390 IFA$=CHR$(EOT)THENPRINTE$+F$"[197][207][212] - [197]ND [207]F [212]RANSMISSION";
1395 IFA$=CHR$(EOT)THENX=V:FE=1
1400 U%(H,X)=ASC(A$+C$)
1405 CH=CH+U%(H,X)
1410 NEXTX
1415 REM ----------------------
1420 REM NOW CHECK FOR ERRORS
1425 REM IN 128 BYTE PACKET
1430 REM ----------------------
1435 IFFD=1THEN1220
1440 IFFE=1THEN1795
1445 REM ----------------------
1450 REM ADJUST CHECKSUM VALUE
1455 REM ----------------------
1460 CH=CH-U%(H,V)
1465 IFCH>32767THENCH=CH-32768:REM IT CAN GET TOO BIG - THIS FIXES IT.
1470 REM ----------------------
1475 REM CHECK FOR START OF HEADER
1480 REM ERROR BY ADDING HEADER VALUES
1485 REM ----------------------
1490 HE=0
1495 IF(U%(H,W)+U%(H,2)+U%(H,3)AND F)<>0THENHE=1
1500 REM IFHETHENGOSUB4260:REM SEND NAK
1505 IFHETHENPRINTER$"[211][207][200] [197]RROR";U%(H,W);U%(H,2);(U%(H,3)AND F)
1510 IFHETHEN1230
1515 REM ----------------------
1520 REM COMPARE CHECKSUM WITH
1525 REM CALCULATED VALUE
1530 REM ----------------------
1535 CE=0
1540 IFU%(H,V)<>(CHANDF)THENCE=1
1545 IFCETHENGOSUB2685:REM SEND NAK
1550 IFCETHENPRINTER$"[195]HECKSUM [197]RROR - [197]XPECTED";(CHANDF)
1555 IFCETHENPRINTJ$"[210][197][195]EIVED -";U%(H,V)
1560 IFCETHEN1245
1565 REM ----------------------
1570 REM MAKE SURE WE HAVE THE
1575 REM CORRECT BLOCK HERE
1580 REM ----------------------
1585 BL=BL+W:IFBL=256THENBL=0
1590 PRINTE$BL$"[211]TATUS"J$J$"128 [194]YTE [194]LOCK:"BL
1595 DB=0
1600 ID=0
1605 IFU%(H,2)<>BLTHENDB=1:ID=1
1610 IFU%(H,2)=BLTHEN1685
1615 IFDBTHENPRINTER$J$"[194]LOCK [201][196] [205]ISMATCH - [197]XPECTED";BL;J$"[210]ECEIVED -";U%(H,2)
1620 IFBL-(U%(H,2))=1THENDB=0
1625 IFBL-(U%(H,2))=1THENPRINT#5,CHR$(ACK):REM ACK THE DUPE
1630 IFBL-(U%(H,2))=1THENBL=BL-1:PRINT"[212]OSSING IT!"
1635 IFIDTHENIFDB=0THEN1240
1640 IFDBTHENGOSUB2685:REM SEND NAK
1645 IFDBTHENBL=BL-1
1650 IFBL<1THENBL=1
1655 IFDBTHEN1245
1660 ID=0
1665 REM ----------------------
1670 REM HOORAY - ITS A GOOD BLOCK
1675 REM LETS GET ANOTHER ONE
1680 REM ----------------------
1685 IFH<>PTHENGOSUB2660:REM SEND ACK
1690 NEXTH
1695 H=H-W
1700 IFBL<>1THEN1770
1705 REM ------------------------------
1710 REM THE FIRST BLOCK FALLS THRU
1715 REM AND IS EXAMINED TO SEE IF IT
1720 REM HAS AN .IMG HEADER. ANY
1725 REM INCORRECT BYTE EXEMPTS BLOCK
1730 REM ONE FROM FURTHER ACTION AND
1735 REM WRITES THE BLOCK TO DISK.
1740 REM ------------------------------
1745 IFU%(1,4)<>4THEN1770
1750 IFU%(1,5)<>0THEN1770
1755 IFU%(1,6)<>67THEN1770
1760 IFU%(1,7)<>67THEN1770
1765 GOTO 4980:REM TOSS FIRST 9
1770 FORX=EOTTOZ
1775 PRINT#3,CHR$(U%(W,X));
1780 NEXTX
1785 GOSUB2660:REM SEND ACK
1790 GOTO1240
1795 GOSUB2660:REM SEND ACK
1800 CLOSE3
1805 GOTO2755
1810 REM ------------------------------
1815 REM MAIN MENU DISPLAY
1820 REM ------------------------------
1825 PRINTCHR$(14)+E$
1830 IFBRTHENPRINT#5,J$J$";;[207][212][200][197][210] [207][208][197][210][193][212][207][210] [199][207][206][197] [212][207] [205][193][201][206] [205][197][206][213]"
1835 PRINTE$LI$
1840 PRINT" [216][205][207][194][213][198] 64-[214]6.8.1 2/4/85 - [205][193][201][206] [205][197][206][213]"J$LI$
1845 PRINT" <1> [212][197][210][205]INAL"
1850 PRINTSR$"<2> [196][207][215]NLOAD - [210]ECEIVE <[210]X> [198]ILE"
1855 PRINTSR$"<3> [213][208][204]OAD - [211]END <[212]X> [198]ILE"
1860 PRINTSR$"<4> [196]ISK [196]IRECTORY"
1865 PRINTSR$"<5> 1650/6420 [193]UTO-[196]IAL"
1870 PRINTSR$"<6> [205]ITEY/[200][197][211][201][201] [193]UTO-[196]IAL"
1875 PRINTSPC(15)"AND [195][194][205] 1660 [196]IAL"
1880 PRINTSPC(5)"<7> [216][205][207][194][213][198] [193]UTO-[193]NSWER"
1885 PRINTSR$"<8> [200]AYES/[211]IGNALMAN [193]UTO-[196]IAL"
1890 PRINTSR$"<9> [209]UIT [208]ROGRAM"F$
1895 IFBRTHENPRINT" ;;[198]OR 64 TO 64 FILE TRANSFER, [211][197][206][196][197][210]"
1900 IFBRTHENPRINT" ;;<[213][208][204][207][193][196][201][206][199] [211][201][196][197]> [193]LWAYS GOES [198][201][210][211][212]!"
1905 IFBR=0THENPRINT"[216][205][207][194][213][198] WILL DOWNLOAD .[201][205][199] FILES FROM"
1910 IFBR=0THENPRINT"[195]OMPU[211]ERVE - [216][205][207][194][213][198] [203]ILLS THE HEADER!";
1915 GOSUB2635
1920 IFA$=CHR$(134)THEN3440
1925 ONVAL(A$)GOTO1020,1160,2885,1935,4510,5415,5225,3000,2650
1930 GOTO1825
1935 GOSUB2555
1940 GOTO1825
1945 REM ------------------------------
1950 REM GET DISK FILENAME SUBROUTINE
1955 REM ------------------------------
1960 PRINTE$:PRINTG$
1965 INPUT"[198]ILENAME E<[216]>IT.";FI$
1970 CLOSE15:CLOSE15:OPEN15,8,15
1975 IFFI$="X"THEN1825
1980 IFFI$="[216]"THEN1825
1985 PRINTE$:PRINTG$
1990 INPUT"[198]ILETYPE <[208]>ROGRAM <[211]>EQUENTIAL E<[216]>IT";FT$
1995 IFFT$="X"THEN1825
2000 IFFT$="[216]"THEN1825
2005 FT$=LEFT$(FT$,W)
2010 CLOSEG:OPENG,8,G,"0:"+FI$+","+FT$+","+K$
2015 INPUT#15,A,B$,TR,SE
2020 PRINTE$" [196]RIVE [211]TATUS:";A;B$;TR;SE
2025 IFA=0THENRETURN
2030 CLOSEG:RETURN
2035 GOTO1825
2040 REM ------------------------------
2045 REM XMODEM UPLOAD PROTOCOL LOOP
2050 REM ------------------------------
2055 G=6
2060 FL=0
2065 UF=0
2070 K$="R"
2075 GOSUB1960:IFATHEN1825
2080 BL=0
2085 FA=W
2090 REM ------------------------------
2095 REM READ A 128 BYTE BLOCK INTO
2100 REM TRANSMIT/SEND ARRAY.
2105 REM ------------------------------
2110 PRINTER$+F$+F$+F$+"[210][197][193]DING "
2115 E1=0:
2116 REM -----------------------------
2117 REM CONSTRUCT 132 BYTE TRANSMIT
2118 REM BLOCK - HEADER BUILT FIRST
2119 REM -----------------------------
2120 FORY=1TOP
2125 U%(Y,W)=W:REM THE FIRST BYTE IS ALWAYS 1 EXCEPT EOT WHEN IT BECOMES 4
2130 BL=BL+W:IFBL=256THENBL=0
2135 U%(Y,2)=BL:REM THE 2ND BYTE IS THE BLOCK NUMBER
2140 U%(Y,3)=F-BL:REM THE THIRD BYTE IS 255 MINUS THE BLOCK NUMBER
2145 CH=W+U%(Y,2)+U%(Y,3):REM ADD THE FIRST 3 BYTES TOGETHER TO START CHECKSUM
2150 PRINTER$+F$+F$+F$+F$+"128 [194]YTE [194]LOCK:"BL;
2155 FORX=EOTTOZ:REM BYTES 4 THRU 131 ARE 128 BYTES OF THE FILE BEING SENT
2160 GET#6,B$
2165 REM ------------------------------
2170 REM THE NEXT TWO LINES FIX A
2175 REM COMMON XMODEM BUG. PEEK 144
2180 REM OR ST VARIABLE BECOMES NON
2185 REM ZERO ONE BYTE EARLY. THIS
2190 REM FORCES ONE ADDITIONAL BYTE TO
2195 REM BE READ AT THE END OF THE FILE
2200 REM SO THE COMPLETE FILE IS SENT.
2205 REM ------------------------------
2210 E=PEEK(144):IFETHENE1=E1+W
2215 IFE1<2THEN2265:REM GET 1 MORE BYTE
2220 FL=Y:REM LOOP TO PACK LAST BLOCK
2225 FORA=XTOZ
2230 U%(Y,A)=26:REM CTRL-Z PER SPEC
2235 CH=CH+U%(Y,A)
2240 IFCH>32767THENCH=CH-32768:REM IN CASE IT GETS TOO BIG THIS CUTS IT DOWN
2245 NEXTA
2250 U%(Y,V)=CHANDF:REM BYTE 132 IS SUM OF BYTES MODULA 256
2255 REM LOGICAL AND DOES THIS WHEN ANDED WITH 255
2260 GOTO2300
2265 U%(Y,X)=ASC(B$+C$)
2270 CH=CH+U%(Y,X)
2275 NEXTX
2280 IFCH>32767THENCH=CH-32768
2285 U%(Y,V)=CHANDF
2290 NEXTY
2295 Y=Y-W
2300 IFUFTHEN2380
2305 IFBRTHENPRINT#5,J$J$";;64 [216][205][207][196][197][205] [198][201][204][197] [212][210][193][206][211][198][197][210] <[210][197][193][196][217]> [195][213][197],"
2310 IFBRTHENPRINT#5,";;[193][210][210][201][214][197][196].... [160][198][210][207][205][160][212][200][197] [207][212][200][197][210][160][207][208][197][210][193][212][207][210]"
2315 IFBRTHENPRINT#5,";;[212][207][160][210][197][195][197][201][214][197] >[199][207] <F1> [206][207][215], [212][207] [196][207][215][206][204][207][193][196]"
2320 IFBRTHENPRINT#5,";;[193][215][193][201][212][201][206][199] [217][207][213][210] [198][201][210][211][212] [206][193][203] [212][207][160][211][212][193][210][212] [212]X."
2325 IFBRTHENPRINTER$";;64 [216][205][207][196][197][205] [198][201][204][197] [212][210][193][206][211][198][197][210] <[210][197][193][196][217]> [195][213][197],"
2330 IFBRTHENPRINT";;[211][197][206][212] [212][207][160][212][200][197] [207][212][200][197][210] [207][208][197][210][193][212][207][210]...."
2335 REM ---- WAIT FOR NAK ----
2340 GET#5,A$
2345 GETB$
2350 REM FIX FOR FILE STILL OPEN BUG
2355 IFB$=CHR$(136)THENCLOSEG:GOTO1020
2360 PRINTER$+CU$+CU$+"[215]AITING FOR [206][193][203] TO [212]X. - <F7> TO [193]BORT!"
2365 PRINT"[194]E PATIENT - THIS MAY TAKE 30
2370 [153]" SECONDS OR MORE"
2375 [139]A$[179][177][199](NAK)[167]2340
2380 UF[178]1
2385 BL[178]BL[171]Y
2390 Y[178]0
2395 [153]E$[170]F$"ASCILE (null)RANSFER IN (null)ROGRESS <F7> TO ATNBORT!"
2400 [153]ER$[170]CU$[170]"(null)(null)(null)OAD (null)TATUS"J$"(null)ATN(null)"BL$[170]CU$[170]"(null)(null)(null)OADING"
2405 Y[178]Y[170]W
2410 [139]Y[177]P[167]2110
2415 BL[178]BL[170]W
2420 [153]BL$"128 PEEKYTE PEEKLOCK:"BL;
2425 [143] ------------------------------
2430 [143] TRANSMIT THE WHOLE 134 BYTES
2435 [143] ------------------------------
2440 [129]X[178]W[164]V
2445 [152]5,[199](U%(Y,X));
2450 [130]X
2455 [143] ------------------------------
2460 [143] NOW GET ACK NAK EOT ETC
2465 [143] ------------------------------
2470 A[178]0
2475 A[178]A[170]1
2480 [161]#5,A$
2485 [161]B$
2490 [139]B$[178][199](136)[167][152]5,[199](CAN):[160]6:[143] RICK STERLINGS FIX
2495 [139]B$[178][199](136)[167]1020
2500 [139]A[177]5000[167]2420
2505 [139]A$[178]""[167]2475
2510 [139]A$[178][199](ACK)[167][139]FL[178]Y[167]FL[178]0:[141]2725:[141]2745:[160]6:[137]2755
2515 [139]A$[178][199](ACK)[167][139]FL[179][177]Y[167][153]ER$AK$"ATNLEN(null)":[137]2405
2520 [139]A$[178][199](ACK)[167][139]Y[178]P[167][153]ER$AK$"ATNLEN(null)":[137]2110
2525 [139]A$[178][199](NAK)[167][153]ER$"(null)ATN(null)"AK$:[137]2420
2530 [139]A$[178][199](CAN)[167][160]6:[137]2755
2535 [137]2470
2540 [143] -----------------------------
2545 [143] DISK DIRECTORY
2550 [143] -----------------------------
2555 [153]E$
2560 [139]BR[167][152]5,J$J$";;(null)(null)LEFT$VAL(null) (null)(null)VAL(null)ATN(null)(null)(null) LENLEFT$VALLEN(null)RIGHT$(null)CHR$ STR$RIGHT$(null)VALLEN(null)(null)(null)(null)"
2565 [160]1
2570 [159]1,8,0,"$0"
2575 [161]#1,A$,A$
2580 [161]#1,A$,A$
2585 [139]A$[178]""[167]2615
2590 [161]#1,A$,B$
2595 [153][198](A$[170]C$)[170][198](B$[170]C$)[172]D;
2600 [161]#1,A$:[139]A$[178]""[167][153]:[137]2580
2605 [153]A$;
2610 [137]2600
2615 [160]1
2620 [153]J$J$" [ ATNNY (null)EY (null)ETURNS ]"
2625 [141]2635
2630 [142]
2635 [161]A$
2640 [139]A$[178]""[167]2635
2645 [142]
2650 [139]M3[167][151]B1,([194](B1)[176]HI):[143] HANG UP 1660
2655 [153]E$F$F$F$" [ (null)YPE '(null)(null)(null)' TO RESTART! ]":[128]
2660 [152]5,[199](ACK);:[143] UPLOAD SEND ACK NAK EOT
2665 [153]ER$"ATNLEN(null)";BL;
2670 Q[178]0
2675 [153]" ";J$" ";J$" "
2680 [142]
2685 Q[178]Q[170]W:WA[178]0
2690 [139]Q[178]11[167][160]3
2695 [139]Q[178]11[167]A$[178][199](CAN)
2700 [139]Q[178]11[167][152]5,A$
2705 [139]Q[178]11[167]2755
2710 [152]5,[199](NAK);
2715 [153]ER$"(null)ATN(null)";FC$;Q
2720 [142]
2725 [152]5,[199](EOT);
2730 [153]ER$"VAL(null)(null)"
2735 [142]
2740 [161]#5,A$
2745 [139]A$[178]""[167]2740
2750 [142]
2755 [153]E$ER$[170]F$[170]F$[170]F$"[ (null)(null)(null)RIGHT$(null)VAL - ATNNY (null)EY FOR (null)VAL(null)(null)INAL ]"
2760 [139]LC[167][153]LC;"TRIES"
2765 Q[178]0
2770 [143] -----------------------------
2775 [143] SOUND ROUTINE
2780 [143] -----------------------------
2785 SO[178]54272:CO[178]0
2790 [151]SO[170]1,250
2795 [151]SO[170]5,10
2800 [151]SO[170]15,200
2805 [151]SO[170]24,15
2810 [129]CL[178]1[164]96:[143] CHANGED FROM 12 TO 96
2815 [151]SO[170]4,21
2820 [130]CL
2825 [151]SO[170]4,20
2830 [161]B$:CO[178]CO[170]1:[139]CO[178]10[167]2840
2835 [139]B$[178]""[167]2790
2840 [139]LC[167]LC[178]0
2845 SO[178]54272
2850 [129]CL[178]0[164]144:[143] CHANGED FROM 24 TO 144
2855 [151]SO[170]CL,0
2860 [130]CL
2865 [137]1020:[143] TO TERMINAL
2870 [143] -----------------------------
2875 [143] START UPLOAD SUBROUTINE
2880 [143] -----------------------------
2885 [153]E$[170]F$"RIGHT$S OTHER (null)(null)(null)TEM READY TO (null)VALLENEIVE? ((null)/(null))":[141]2635
2890 [139]A$[178]"N"[167]1020
2895 [139]A$[178]"(null)"[167]1020
2900 [139]A$[179][177]"Y"[167]2885
2905 [153]E$"(null)PLOADING "F$
2910 [137]2055
2915 [153]E$
2920 [153]J$" ATNCCEPT PRESENT COLOR SETTING? (Y/N)"
2925 [153]F$
2930 [141]2635
2935 [139]A$[178]"N"[167][141]5050
2940 [153]E$F$
2945 [153]F$[166]8)"(null)ELECT STR$ESIRED PEEKAUD (null)ATE"
2950 [153]F$J$J$
2955 [153][166]13)"<3> FOR 300"J$
2960 [153][166]13)"<1> FOR 1200"
2965 [141]2635
2970 [139]A$[178]"1"[167]270
2975 [139]A$[178]"3"[167]285
2980 [137]2965
2985 [143] -----------------------------
2990 [143] HAYES/SIGNALMAN REDIALER
2995 [143] -----------------------------
3000 [153][199](14)
3005 [153]E$
3010 [153][166]5)"LEFT$AYES/(null)IGNALMAN ATN(null)(null)(null)-STR$RIGHT$ATN(null)CLOSE(null)(null)STR$VAL"J$J$J$
3015 DD[178]15
3020 LC[178]0
3025 [133]"VALNTER DESIRED DELAY <CR>=15";DD
3030 [139]DD[177]30[167]DD[178]30
3035 [152]5,"AT":[143] TRY TO GET MODEMS ATTENTION
3040 [161]#5,IT$:[139]IT$[178]""[167]DY[178]3:[141]3385:[137]3035:[143] QUIT -CK TO RESPOND- HF
3045 IT[178]([194](B1)[175]16):[143] TEST CARRIER BIT - INTERFACE IS ? - HF
3050 [153]
3055 [153]J$" VALNTER NUMBER YOU WISH TO DIAL"
3060 [153]F$[170]" <F7> ATNBORTS ATNUTODIAL"J$
3065 [133]NU$
3070 NV$[178]J$[170]"ATN(null)STR$(null)"[170]NU$
3075 [153]E$
3080 [153]"STR$IALING ";NU$;" <F7> (null)O ATNBORT"
3085 [129]I[178]1[164]255
3090 [161]#5,A$
3095 [130]I
3100 [143] ------------------------
3105 [143] DIAL THE SMARTMODEM
3110 [143] ------------------------
3115 [152]5,NV$
3120 [153]NV$
3125 [143] ------------------------
3130 [143] CHECK FOR ECHO
3135 [143] ------------------------
3140 I[178]0
3145 I[178]I[170]1
3150 [161]#5,R$
3155 [161]A$
3160 [139]A$[178][199](136)[167]1020
3165 [139]R$[178]"(null)"[167]3230
3170 [139]I[179]150[167]3145
3175 [153]J$[170]"(null)O VALCHO"
3180 [152]5,"AT"
3185 I[178]0
3190 I[178]I[170]1
3195 [161]#5,R$
3200 [139]R$[178]"(null)"[167]3075
3205 [139]I[179]100[167]3190
3210 [137]3075
3215 [143] ------------------------
3220 [143] GET MODEM RESPONSE
3225 [143] ------------------------
3230 [161]A$
3235 [139]A$[178][199](136)[167]1020
3240 SC[178]0
3245 TC$[178][199](0)
3250 LC[178]LC[170]1
3255 [153]BL$"ATNTTEMPT (null)UMBER";LC
3260 A[178][194](B3):[143] CHECK CLOCK
3265 PB[178][194](B1)
3270 [139](PB[175]16)[179][177]IT[167]2755:[143] IS CARRIER? - HF
3275 B[178][194](B3)
3280 [161]A$:[161]#5,R$
3285 [139]A$[178][199](136)[167]1020
3290 [139]A[178]B[167]3275:[143] GET UPDATE IF NO CHANGE
3295 SC[178]SC[170]1
3300 [153]BL$[170]F$[170]F$[170]"STR$ELAY LENOUNT =";SC
3305 PB[178][194](B1)
3310 [139](PB[175]16)[179][177]IT[167]2755:[143] IS CARRIER? - HF
3315 [139]SC[179]DD[167]3260
3320 [152]5,"A"
3325 I[178]0
3330 TC$[178][199](0)
3335 I[178]I[170]1
3340 [143] EVEN IF NO CARRIER DETECT PROVIDED - CHECK RESULTS FROM MODEM
3345 [161]#5,R$
3350 [139]R$[178]"LEN"[167]2755:[143] CONNECT
3355 [139]R$[178]"(null)"[167]3075:[143] NO CARRIER - HF
3360 [139]I[179]255[167]3335
3365 [137]3075
3370 [143] ------------------------------
3375 [143] WHOLE SECONDS DELAY SUBROUTINE
3380 [143] ------------------------------
3385 SC[178]0
3390 A[178][194](B3):[143] CHECK CLOCK
3395 B[178][194](B3)
3400 [161]B$:[139]B$[178][199](136)[167][142]
3405 [139]A[178]B[167]3395:[143] GET UPDATE IF NO CHANGE
3410 SC[178]SC[170]1
3415 [139]SC[179]DY[167]3390
3420 [142]
3425 [143] ------------------------------
3430 [143] BUFFER/PRINTER CONTROL MENU
3435 [143] ------------------------------
3440 [153]E$LI$
3445 [152]5,[199](XF);
3450 [139]BR[167][152]5,J$J$";;(null)(null)LEFT$VAL(null) (null)(null)VAL(null)ATN(null)(null)(null) CHR$(null)(null)VAL (null)(null) PEEK(null)ASCASCVAL(null) (null)VAL(null)(null)"
3455 [153]" PEEK(null)ASCASCVAL(null)CLOSELEN(null)(null)(null)(null)(null)(null)CLOSE(null)VAL(null)(null)"
3460 BI[178](BP[171]BE)[173]255:CI[178][181](BI):DI[178]BI[171]CI:[139]DI[167]CI[178]CI[170]1
3465 BC[178]BB[171]BP:E3[178]BP[171]BE
3470 [153]BC;"PEEKYTES ATNVAILABLE,";E3;"PEEKYTES (null)SED"
3475 [153][166]10);CI;"LENPEEK(null) STR$ISK PEEKLOCKS"
3480 [153]LI$;
3485 [153]SR$"<1> (null)VAL(null)(null)INAL"
3490 [153]SR$"<2> (null)AVE PEEKUFFER TO STR$ISK/(null)RINTER"
3495 [153]SR$"<3> (null)OAD PEEKUFFER FROM STR$ISK"
3500 [153]SR$"<4> (null)END <(null)X> PEEKUFFER TO (null)ODEM"
3505 [153]SR$"<5> (null)END <(null)X> (null)VAL(null). ASCILE TO (null)ODEM"
3510 [153]SR$"<6> STR$ISPLAY PEEKUFFER TO (null)CREEN"
3515 [153]SR$"<7> (null)VAL(null). ASCILE (null)EADER/(null)RINTER"
3520 [153]SR$"<8> STR$ISK STR$IRECTORY"
3525 [153]SR$"<9> (null)UIT (null)ROGRAM"
3530 [141]2635
3535 [139]A$[178][199](133)[167]1825
3540 [145][197](A$)[137]1020,3625,3970,4100,4170,3895,4290,3546,2650
3545 [137]3440
3546 [141]2555
3550 [143] ------------------------
3555 [143] OPEN BUFFER ROUTINE
3560 [143] ------------------------
3565 BD[178]1:[153]J$J$"[ PEEKUFFER OPEN ] -";BC;"PEEKYTES ATNVAIL."
3570 [137]1120
3575 [143] ------------------------
3580 [143] CLOSE BUFFER ROUTINE
3585 [143] ------------------------
3590 BD[178]0
3595 [129]X[178]1[164]500:[130]X
3600 [153]J$J$"[ PEEKUFFER CLOSED ]"
3605 [137]1120
3610 [143] ------------------------
3615 [143] SAVE BUFFER TO DISK/PRINTER
3620 [143] ------------------------
3625 [153]E$
3630 [153]" (null)AVE TO - <1> STR$ISK -OR- <2> (null)RINTER":[141]2635
3635 [129]BG[178]BE[164]BE
3640 [139]A$[178]"1"[167]3665
3645 [139]A$[178]"2"[167]3795
3650 [143] ------------------------
3655 [143] SAVE BUFFER TO DISK
3660 [143] ------------------------
3665 RW$[178]"W"
3670 [153]E$
3675 [153][166]8)"(null)ATN(null)VALCLOSEPEEK(null)ASCASCVAL(null) (null)(null)CLOSESTR$RIGHT$(null)(null) (null)(null)STR$VAL"J$
3680 [141]4885
3685 [139]A$[178]"A"[167]1020
3690 [139]A[178]0[167]3710
3695 [160]8
3700 [141]5095
3705 [137]3440
3710 [153]:[153]" (null)AVING";BP[171]BE;" PEEKYTES"
3715 BI[178](BP[171]BE)[173]255:CI[178][181](BI):DI[178]BI[171]CI:[139]DI[167]CI[178]CI[170]1
3720 [153]J$" ";CI;"LENPEEK(null) STR$ISK PEEKLOCKS - <F7> ATNBORTS!"
3725 [129]BG[178]BE[164]BP
3730 [152]8,[199]([194](BG));
3735 [161]A$:[139]A$[178][199](136)[167]BG[178]BP:BD[178]0
3740 [130]BG
3745 BD[178]0
3750 [152]8:[160]8
3755 [153]F$[170]F$" (null)ATN(null)VAL LEN(null)(null)(null)(null)VAL(null)VAL - (null)ERO THE PEEKUFFER? ((null)/(null))"
3760 [141]2635
3765 [139]A$[178]"Y"[167]BP[178]BE
3770 [139]A$[178]"(null)"[167]BP[178]BE
3775 [137]3440
3780 [143] ------------------------
3785 [143] SAVE BUFFER TO PRINTER
3790 [143] ------------------------
3795 [153]E$
3800 [153][166]12)"(null)(null)RIGHT$(null)(null)CLOSEPEEK(null)ASCASCVAL(null) (null)(null)STR$VAL"
3805 [153]" <(null)PACEBAR> TO (null)TART/(null)AUSE PRINTING"
3810 [153][166]14)"<F7> ATNBORTS!"J$:[141]2635
3815 [159]4,4,7:L[178]1:QF[178]0:[129]RO[178]0[164]80
3820 [129]BG[178]BE[164]BP
3825 A$[178][199]([194](BG[170]RO)):[139]A$[178][199](10)[167]A$[178][199](29)[170][199](157)
3830 [152]4,[199](17)A$;:[139]A$[178][199](13)[167]L[178]L[170]1:[141]3870
3835 [153]A$;
3840 [161]A$:[139]A$[178][199](136)[167]BG[178]BP:[160]4:BD[178]0:[137]3440
3845 [139]A$[178][199](32)[167][141]2635
3850 [130]BG
3855 BD[178]0:[143] CLOSE BUFFER TO AVOID GARBAGE AT THE END
3860 [160]4
3865 [137]3440
3870 [139]L[178]60[167]L[178]1:[129]X[178]1[164]7:[152]4:[130]X
3875 [142]
3880 [143] ------------------------
3885 [143] DISPLAY BUFFER TO SCREEN
3890 [143] ------------------------
3895 [153]E$
3900 [153][166]10)"STR$RIGHT$(null)(null)(null)ATN(null)CLOSEPEEK(null)ASCASCVAL(null)CLOSE(null)(null)STR$VAL"
3905 [153]" <(null)PACEBAR> TO (null)TART/(null)AUSE DISPLAY"
3910 [153][166]13)"<F7> ATNBORTS!"J$:[141]2635
3915 [129]BG[178]BE[164]BP
3920 [153][199]([194](BG));
3925 [161]A$:[139]A$[178][199](136)[167]BG[178]BP:BD[178]0:[137]3440
3930 [139]A$[178][199](32)[167][141] 2635
3935 [130]BG
3940 BD[178]0:[143] CLOSE BUFFER TO AVOID GARBAGE AT THE END
3945 [153]J$[170]F$F$"[ VALND OF PEEKUFFER (null)EAD - (null)RESS ANY KEY ]":[141]2635
3950 [137]3440
3955 [143] ------------------------
3960 [143] LOAD BUFFER FROM DISK
3965 [143] ------------------------
3970 BP[178]BE:[143] ZERO BUFFER
3975 RW$[178]"R"
3980 [153]E$
3985 [153]" (null)(null)ATNSTR$ ASCRIGHT$(null)VALCLOSE(null)(null) PEEK(null)ASCASCVAL(null)CLOSEASC(null)(null)(null)CLOSESTR$RIGHT$(null)(null)CLOSE(null)(null)STR$VAL"J$
3990 [141]4885:[143] GET FILENAME & ERROR ROUTINE
3995 [139]A$[178]"A"[167]1025:[143] ERROR GOTO TERMINAL
4000 [139]A[178]0[167]4020
4005 [160]8
4010 [141]5095
4015 [137]3440
4020 [153]F$" <F7> ATNBORTS!"
4025 [161]#8,A$:A$[178]A$[170][199](0)
4030 [161]B$
4035 [139]B$[178][199](136)[167][160]8:[137]3440
4040 E[178][194](144)
4045 [139]E[167] 4075
4050 [151]BP,[198](A$)
4055 BP[178]BP[170]1
4060 [139]BP[179]BB[167] 4025
4065 [153]F$F$" [ PEEKUFFER ASCULL ]":BD[178]0:[160]8:[141]5095:[137]3440
4070 BD[178]0
4075 [160]8
4080 [137]3440
4085 [143] ------------------------------
4090 [143] SEND BUFFER DIRECT TO MODEM
4095 [143] ------------------------------
4100 [153]E$F$"(null)END <(null)X> PEEKUFFER TO (null)ODEM"J$
4105 [153]"PEEKYTES:";BP[171]BE;" <F7> ATNBORTS!"J$[170]F$
4110 [129]BG[178]BE[164]BP
4115 A$[178][199]([194](BG))
4120 [152]5,[199](T%([198](A$)));
4125 [153]A$;
4130 [161]B$:[139]B$[178][199](136)[167]BG[178]BP:BD[178]0:[137]3440
4135 [161]#5,R$:[139]R$[178][199](XF)[167][141]5690
4140 [130]BG
4145 BD[178]0:[143] CLOSE BUFFER
4150 [137]2755
4155 [143] -----------------------------
4160 [143] SEND SEQ FILE DIRECT TO MODEM
4165 [143] -----------------------------
4170 RW$[178]"R"
4175 [153]E$F$"(null)END <(null)X> (null)VAL(null). ASCILE TO (null)ODEM <F7> ATNBORTS"J$
4180 [141]4885:[139]A$[178]"A"[167]1020
4185 [139]A[167][160]8:[141]5095:[137]3440
4190 [161]#8,A$
4195 E[178][194](144)
4200 [139]E[167][160]8:[137]2755
4205 [139]A$[178]""[167]4190
4210 [152]5,[199](T%([198](A$)));
4215 [161]#5,R$:[139]R$[178]""[167]4230
4220 [139]R$[178][199](XF)[167][141]5690
4225 [153][199](F%([198](R$)));
4230 [161]B$
4235 [139]B$[178][199](136)[167][160]8:[137]3440
4240 [137]4190
4245 [143] ------------------------
4250 [143] ZERO AND CLOSE BUFFER
4255 [143] ------------------------
4260 BP[178]BE:[153]J$J$"[ PEEKUFFER (null)EROED & LENLOSED ]"
4265 BD[178]0
4270 [137]1120
4275 [143] ------------------------------
4280 [143] BOBS SEQ. READER/PRINTER
4285 [143] ------------------------------
4290 [139]BR[167][152]5,J$J$";;(null)(null)LEFT$VAL(null)CLOSE(null)(null)VAL(null)ATN(null)(null)(null)CLOSECHR$(null)(null)VAL (null)(null) (null)VAL(null). (null)VALATNSTR$VAL(null)"
4295 [160]15
4300 [160]1:[159]1,4,7:L[178]1:P[178]0
4305 [153]E$
4310 [153]" (null)VAL(null). ASCRIGHT$(null)VAL (null)VALATNSTR$VAL(null)CLOSEATN(null)STR$CLOSE(null)(null)RIGHT$(null)(null)VAL(null)"J$
4315 FI$[178]"":[143] CLEAN STRING
4320 [153]F$"ASCILENAME E<(null)>IT!";:[133]FI$
4325 [139]FI$[178]"X"[167][160]1:[137]3440
4330 [139]FI$[178]"(null)"[167][160]1:[137]3440
4335 [160]8:[159]8,8,8,FI$[170]",S,R":[141]4465
4340 [153]E$[170]F$[170]F$"LENHOICE <F1>(null)RINTER <F3>(null)CREEN <F5>ATNBORT"
4345 [153]F$" <F7> (null)(null)CHR$CHR$(null)VAL(null) (null)AUSE/LENONTINUE"J$LI$
4350 [161]A$:[139]A$[179][199](133)[176]A$[177][199](135)[167]4350
4355 [139]A$[178][199](133)[167]P[178]1:[137]4370:[143] <F1> PRINTER
4360 [139]A$[178][199](135)[167][160]1:[160]8:[137]3440:[143] <F5> ABORT
4365 [139]A$[178][199](134)[167]4370:[143] <F3> SCREEN
4370 [139]P[178]1[167][152]1,[199](145)[199](14)FI$[199](17)[199](15):[152]1:L[178]4:
4375 [161]#8,A$:[139]A$[178][199](10)[167]A$[178][199](29)[170][199](157):[151]212,0:[139]ST[178]0[167]4385
4380 [139]ST[178]64[167]4435
4385 [153]A$;
4390 [139]P[178]1[167][152]1,A$;:L[178]1:[139]A$[178][199](13)[167]L[178]L[170]1:[141]4485
4395 [161]A$:[139]A$[178]""[167]4375
4400 [153]:[153]F$"(null)ATN(null)(null)VAL:<F1>(null)RINTER <F3>(null)CREEN <F5>ATNBORT"F$
4405 [161]A$:[139]A$[179][199](133)[176]A$[177][199](136)[167]4405
4410 [139]A$[178][199](133)[167]P[178]1:[152]1,[199](17):[152]1:L[178]1:[137]4425
4415 [139]A$[178][199](134)[167]P[178]0:[137]4425
4420 [139]A$[178][199](135)[167]4430
4425 [137]4375
4430 [153]F$[170]F$"[ (null)PERATION ABORTED ]":[141]5095
4435 [139]P[178]1[167][152]1:[129]X[178]L[170]1[164]3:[152]1:[130]X:[152]1,[199](145)
4440 [160]1:[160]8:[153]F$F$F$"=> (null)VALATNSTR$/(null)(null)RIGHT$(null)(null)CLOSEATN(null)(null)(null)LEFT$VAL(null)CLOSEASCRIGHT$(null)VAL? ((null)/(null))"
4445 [161]A$:[139]A$[178]""[167]4445
4450 [139]A$[178]"Y"[167][160]15:[137]4300
4455 [139]A$[179][177]"N"[167]4445
4460 [153]E$:[137]3440
4465 [160]15:[159]15,8,15:[132]15,N,N$,TR,SE
4470 [139]N[177]1[167][153]F$F$"STR$RIGHT$(null)(null) VAL(null)(null)(null)(null):"N;N$;TR;SE:[160]15:[137]4475
4475 [139]N[177]1[167][153]F$F$"[ (null)OAD ATNBORTED ]":[141]5095:[141]4440
4480 [142]
4485 [139]L[178]60[167]L[178]1:[129]X[178]1[164]7:[152]1:[130]X
4490 [142]
4495 [143] -----------------------------
4500 [143] 1650/6420 AUTODIAL
4505 [143] -----------------------------
4510 [153]E$[170]F$[170]F$[166]11)"[ (null)ETTING (null)ODEM ]"
4515 [151]B2,32:[143] SET CIA
4520 [151]B1,0:[143] HANG UP PHONE
4525 DY[178]1
4530 [141]3385
4535 [153]E$
4540 [153][166]8)"1650/6420 ATN(null)(null)(null)-STR$RIGHT$ATN(null) (null)(null)STR$VAL"J$
4545 [153]"(null)ET (null)-STR$ (null)WITCH TO STR$"
4550 [153]" (null)-ATN (null)WITCH TO (null)"
4555 [153]" LEFT$-ASC (null)WITCH TO ASC"
4560 [153]J$
4565 [153]F$[170]"VALNTER (null)EDIAL STR$ELAY. <CR>=15 (null)ECONDS"
4570 CK[178]15
4575 [133]CK
4580 [153]F$[170]F$[170]"VALNTER (null)UMBER TO STR$IAL AND (null)RESS <(null)VAL(null)(null)(null)(null)>"
4585 [133]NU$
4590 [151]B1,32:[143] PICK UP THE PHONE
4595 CJ[178]0
4600 DY[178]2
4605 [141]3385:[143] WAIT 2 SECONDS
4610 D[178][195](NU$)
4615 [153]E$F$"STR$IALING: ";NU$;J$;J$
4620 [129]X[178]1[164]D
4625 N$[178][202](NU$,X,1)
4630 [153]N$;
4635 N[178][197](N$)
4640 [139]N[178]0[167]N[178]10
4645 [141] 4675
4650 [130]X
4655 [137] 4755
4660 [143] --------------------------
4665 [143] SUBROUTINE TO PULSE THE LINE
4670 [143] --------------------------
4675 [129]N1[178]1[164]N
4680 [151]B1,0:[143] HANG IT UP BRIEFLY
4685 [151]B1,0:[143] MAKE SURE
4690 DY[178]13
4695 [141] 4835
4700 [151]B1,32:[143] PICK IT UP BRIEFLY
4705 [151]B1,32:[143] SECOND POKE SEEMS TO ENHANCE ACCURACY OF OLDER 1650S
4710 DY[178]20
4715 [141] 4835
4720 [130]N1
4725 DY[178]60
4730 [141] 4835
4735 [142]
4740 [143] --------------------------
4745 [143] CHECK FOR CARRIER
4750 [143] --------------------------
4755 [153]BL$[170]G$[170]EJ$[170]"<F7> TO ATNBORT!"
4760 [139][194](B1)[179]99[167]2755:[143] CARRIER DETECTED TO ONLINE
4765 [161]B$
4770 [139]B$[178][199](136)[167]1825
4775 DY[178]5:[143] UP 2 TO 5 DELAY TO PICK UP CARRIER
4780 [141]3385
4785 [139]B$[178][199](136)[167]1825
4790 CJ[178]CJ[170]1
4795 [139]5[172]CJ[177]CK[167][151]B1,0
4800 [139]5[172]CJ[177]CK[167]DY[178]5
4805 [139]5[172]CJ[177]CK[167][141]3385
4810 [139]5[172]CJ[177]CK[167] 4590
4815 [137] 4755
4820 [143] --------------------------
4825 [143] SHORT DELAY SUBROUTINE
4830 [143] --------------------------
4835 SC[178]0
4840 A[178][194](56325):[143] CHECK TIMER A
4845 B[178][194](56325)
4850 [139]A[178]B[167] 4845:[143] GET UPDATE IF NO CHANGE
4855 SC[178]SC[170]1
4860 [139]SC[179]DY[167] 4840
4865 [142]
4870 [143] --------------------------
4875 [143] LOAD/SAVE FILENAME ROUTINE
4880 [143] --------------------------
4885 [160]15:[153][170]J$[170]J$
4890 [133]" ASCILENAME E<(null)>IT! ";FI$
4895 [139]FI$[178]"X"[167]3440
4900 [139]FI$[178]"(null)"[167]3440
4905 [160]8:[159]8,8,8,"0:"[170]FI$[170]",S,"[170]RW$
4910 [159]15,8,15:[132]15,A,B$,TR,SE
4915 [153]:[153]F$" STR$RIGHT$(null)(null) VAL(null)(null)(null)(null):"A;B$;TR;SE:[142]
4920 [142]
4925 [143] ------------------------------
4930 [143] KILL CIS IMG HEADER HERE. THIS
4935 [143] IS CHECKED AGAINST VALUES FROM
4940 [143] INITIALIZATION ROUTINES TO BE
4945 [143] SURE NOTHING GOOD IS DELETED
4950 [143] ------------------------------
4955 [129]Z[178]4[164]8:[143] DOUBLE CHECK IT
4960 [139]U%(1,Z)[179][177]B%(Z)[167]FC[178]Z:Z[178]8
4965 [130]Z
4970 [139]U%(1,4)[178]4[167] 4980
4975 [139]FC[179][177]1[167] 5020
4980 [153]J$J$"[ STR$VAL(null)VAL(null)RIGHT$(null)CHR$ LENRIGHT$(null) RIGHT$(null)ATNCHR$VAL LEFT$VALATNSTR$VAL(null) ]"
4985 DY[178]1:[141]3385
4990 [129]X[178]10[164]Z:[143] THIS KILLS IT BY NOT PRINTING FIRST 9 TO DISK
4995 [152]3,[199](U%(W,X));
5000 [130]X
5005 [153]E$:[143] CLEAR THE CRAP FROM THE SCREEN
5010 FC[178]0
5015 [137]1785
5020 [139]FC[178]4[167]FC[178]0:[137]1770
5025 [139]FC[178]8[167]FC[178]0:[137] 4980
5030 [137]1770
5035 [143] ------------------------------
5040 [143] USER COLOR SELECTION
5045 [143] ------------------------------
5050 [153]J$" RIGHT$NPUT DESIRED LENPEEK(null) COLOR CODES FOR"
5055 [153]" CHARACTER, BORDER, AND BACKGROUND."
5060 [153]" (null)(null),(null)(null),(null)(null) - (SEPARATED BY COMMAS)."
5065 [133]D1,D2,D3
5070 [151]646,D1:[151]53280,D2:[151]53281,D3
5075 [142]
5080 [143] ------------------------------
5085 [143] TIME DELAY ROUTINE
5090 [143] ------------------------------
5095 [129]X[178]1[164]3000:[130]X
5100 [142]
5105 [143] -----------------------
5110 [143] SCREEN PRINT
5115 [143] -----------------------
5120 [152]5,[199](XF);
5125 [139]MT[178]1[167]G1$[178][199](142):G2$[178]G1$:G0$[178]G2$:[137]5135
5130 G2$[178]G1$[170][199](15):G0$[178]G2$
5135 [159]4,4,7:[152]4:[139]ST[178][171]128[167][160]4:TS[178]2:[142]
5140 [157]4
5145 [129]IT[178]0[164]24:[153][166]2);
5150 [129]TT[178]0[164]39:A[178]([194]((IT[172]40)[170]TT[170]1024))
5155 [139]A[177]128[167]A[178]A[171]128:G4[178]1:G0$[178]G0$[170][199](18)
5160 [139]MT[178]1[175]A[177]64[167]A[178]A[171]64
5165 [139]A[177]0[175]A[179]32[167]A[178]A[170]64:[137]5185
5170 [139]A[177]31[175]A[179]64[167]5185
5175 [139]A[177]63[175]A[179]96[167]A[178]A[170]128:[137]5185
5180 [139]A[177]95[175]A[179]128[167]A[178]A[170]64:[137]5185
5185 G0$[178]G0$[170][199](A):[139]A[178]34[175]G4[178]1[167]G0$[178]G0$[170][199](34)
5190 [139]G4[178]1[167]G0$[178]G0$[170][199](146):G4[178]0
5195 [130]TT:[153]G0$:G0$[178]G2$
5200 [130]IT
5205 [152]4:[160]4:[137]1120
5210 [143] ------------------------------
5215 [143] XMOBUF AUTO-ANSWER
5220 [143] ------------------------------
5225 [153]E$
5230 [153]" (null)MOBUF ATN(null)(null)(null)-ATN(null)(null)(null)VAL(null)CLOSE(null)(null)STR$VAL"
5235 [153]F$"(null)ET APPLICABLE MODEM SWITCHES..."
5240 [153]F$" (null)-STR$ SWITCH TO STR$"
5245 [153]" (null)-STR$ SWITCH TO STR$"
5250 [153]" (null)-ATN SWITCH TO ATN"
5255 [153]" LEFT$-ASC SWITCH TO ASC"
5260 [153]F$F$F$"AND... [ LEFT$IT ATNNY (null)EY TO (null)ELECT (null)ODEM ]":[141]2635
5265 [153]CU$CU$"(null)ODEM"
5270 [153]"TYPE : <1> 1650/6420 <2> (null)ITEY/LEFT$VAL(null)RIGHT$RIGHT$ "
5275 [141]2635
5280 [139]A$[178]"1"[167][151]B2,32:[151]B1,.:[137]5295:[143] HANG UP 1650/6420
5285 [139]A$[178]"2"[167][151]B1,32:[151]B2,.:[137]5295:[143] HANG UP MITEY/HES
5290 [137]5275
5295 [139]A$[178]"1"[167][153]CU$CU$[166]23)" "
5300 [139]A$[178]"2"[167][153]CU$CU$[166]7)" "
5305 [153]F$F$"(null)VALATNSTR$(null), (null)ATNRIGHT$(null)RIGHT$(null)CHR$CLOSEASC(null)(null)CLOSELENATN(null)(null) - <F7> ATNBORTS!"
5310 [161]A$:[139]A$[178][199](136)[167]1825:[143] ABORT TO MENU
5315 MM[178]1:[143] COUNTER
5320 [139]([194](B1)[175]8)[179][177]0[167]5310:[143] WAIT FOR RING
5325 [143] ---------------------------
5330 [143] CARRIER DETECT
5335 [143] ---------------------------
5340 [151]B2,38:[151]B1,0:[143] START CARRIER HIGH
5345 [129]X[178]1[164]100:[130]X
5350 [139][194](B1)[178]201[167]2755:[143] CARRIER DETECTED TO ONLINE
5355 [139][194](B1)[178]217[167][151]B1,2:[143] IF 2 HIGHS THEN GO LOW
5360 [143] GOSUB5175
5365 [139][194](B1)[178]203[167]2755:[143] CARRIER DETECTED TO ONLINE
5370 [139][194](B1)[178]219[167][151]B1,0:[143] IF 2 LOWS THEN GO HI
5375 MM[178]MM[170]1:[139]MM[179]10[167]5345
5380 [151]B2,38:[151]B1,32:[137]2755:[143] CARRIER DETECT TO ONLINE
5385 [151]B1,32:[151]B2,0:[143] HANG UP MITEY/HES
5390 [153]F$F$" (null)(null)CLOSELENATN(null)(null)RIGHT$VAL(null)CLOSESTR$VAL(null)VALLEN(null)VALSTR$ - LEFT$ATN(null)CHR$ING (null)(null)":[141]5680
5395 [137]5225
5400 [143] ------------------------------
5405 [143] MITEY/HES AUTO-DIAL
5410 [143] ------------------------------
5415 [153]E$
5420 [139]M3[167][151]B1,([194](B1)[176]HI):[143] HANG UP 1660
5425 [153]" 1660/(null)ITEY(null)O/LEFT$VAL(null)RIGHT$RIGHT$ ATN(null)(null)(null)-STR$RIGHT$ATN(null)CLOSE(null)(null)STR$VAL"J$
5430 [151]B1,32:[151]B2,0:[143] HANG UP
5435 [153]F$"(null)ET (null)-STR$ SWITCH TO STR$ - <F7> ATNBORTS!"
5436 [153]J$"LEFT$YPHEN INSERTS A 2 SEC DELAY"
5440 [153]F$F$"VALNTER (null)UMBER TO STR$IAL:";:ND$[178]"":[153]" ";
5445 [133]NN$
5470 ND$[178]NN$
5480 [143] ---- DIALER ----
5485 [153]F$J$"(null)UMBER OF (null)RIES?CLOSE- <CR>=5":XT$[178]"5":[133]XT$:XT[178][197](XT$):TX[178]0
5490 [161]B$:[139]B$[178][199](136)[167]5700:[143] TO MENU
5495 [143] PRINTF$+F$+F$" (null)ATNRIGHT$(null)RIGHT$(null)CHR$ ASC(null)(null) STR$RIGHT$ATN(null) (null)(null)(null)VAL.... <F7> ATNBORTS!"
5500 [151]B2,38:[151]B1,32:[143] HANG UP
5505 DY[178]2:[141]3385:[139]B$[178][199](136)[167]5700:[143] WAIT 2 SECS
5510 [151]B1,4:[143] PICK UP PHONE
5515 DY[178]3:[141]3385:[139]B$[178][199](136)[167]5700
5520 [153]E$F$
5525 [153]" <F7> ATNBORTS!"F$
5530 TX[178]TX[170]1:[153][166]30)"(null)RY:"TX
5535 LN[178][195](ND$):MM[178]1:[153]CU$"STR$IALING:";
5540 VV$[178][202](ND$,MM,1)
5545 [139]VV$[178]"-"[167]DY[178]2:[141]3385:[139]B$[178][199](136)[167]5700
5550 VV[178][197](VV$):[139]VV[178]0[167]VV[178]10
5555 [129]MV[178]1[164]VV
5560 [151]B1,32:[151]B1,32:[143] HANG IT UP
5561 [129]QQ[178]1[164]30:[143] DIAL TIMING
5562 [130]QQ
5563 [151]B1,4:[151]B1,4:[143] PICK IT UP
5564 [129]QQ[178]1[164]50:[143] DIAL TIMING
5565 [130]QQ
5566 [161]B$:[139]B$[178][199](136)[167]5700
5570 [130]MV:[143] SEND NEXT PULSE
5575 [141]5680
5580 MM[178]MM[170]1:[139]MM[179][178]LN[167]5540
5585 [143] SEND NEXT DIGIT
5590 [143] ------------------------
5595 [143] CARRIER DETECT
5600 [143] ------------------------
5605 MM[178]0
5610 [151]B2,38:[151]B1,02:[143] PICK UP PHONE AND START CARRIER LOW
5615 [141]5680:[143] HI/LO DELAY
5620 [139][194](B1)[178]203[167]2755:[143] CARRIER DETECTED TO ONLINE
5625 [139][194](B1)[178]91[167][139][194](B2)[178]38[167]M3[178]1
5630 [139]M3[167]2755
5635 [139][194](B1)[178]219[167][151]B1,0:[143] IF 2 LOW'S THEN GO HI
5640 [139][194](B1)[178]201[167]2755:[143] CARRIER DETECTED TO ONLINE
5645 [139][194](B1)[178]217[167][151]B1,2 :[143] IF 2 HI'S THEN GO LOW
5650 MM[178]MM[170]1:[139]MM[179]10[167]5615
5655 [139]M3[167]2755
5660 [153]J$F$F$" (null)(null) LENATN(null)(null)RIGHT$VAL(null) STR$VAL(null)VALLEN(null)VALSTR$":[151]B1,32:[151]B2,0:[143] HANG UP
5665 [139]TX[179][177]XT[167][137]5490
5670 [153]F$F$F$" [ LEFT$ATN(null)CHR$ING (null)(null) (null)HONE ]":[151]B1,32:[151]B2,0
5675 DY[178]3:[141]3385:[137]1825:[143] TO MENU AFTER 3 SECS
5680 DY[178]2:[141]3385
5685 [142]
5690 [161]#5,R$:[139]R$[179][177][199](XN)[167]5690
5695 [142]
5700 [151]B1,32:[151]B2,0:[137]1825:[143] HANG UP HES/MITEY/1660 THEN GOTO MENU.